#pragma once
#include <iostream>
#include <GL\glew.h>

struct SHADERTYPE {

	enum ST {
		VERTEX,
		FRAGMENT,
		GEOMETRY,
		TESSELLATION
	};

};

class Shader
{
	std::string m_name;
	std::string* m_source;
	bool m_compiled;
	SHADERTYPE::ST m_shaderType;
	GLuint m_shaderHandle;
	bool m_debugState;
	int m_refCount;

public:
	Shader(std::string name, SHADERTYPE::ST type);
	~Shader();
	void compile();
	void load(std::string name);
	void toggleDebug();
	GLuint getShaderHandle();
	void incrementRefCount();
	void decrementRefCount();
	int getRefCount();
};

